All Projects

|

Pet Adoption React Native

🗓️ 2024

  • P
  • e
  • t
  • -
  • A
  • d
  • o
  • p
  • t
  • i
  • o
  • n
  • -
  • R
  • e
  • a
  • c
  • t
  • -
  • N
  • a
  • t
  • i
  • v
  • e

A mobile app that allows users to discover, browse, and adopt pets. Built with React Native and Expo for a seamless cross-platform experience. The app connects users with animal shelters and enables them to view pet details, apply for adoption, and communicate with shelters directly.

Tech Stack:

React Native

Expo

TypeScript

Express.js

Context API

Tailwind CSS

Axios

JWT

MongoDB

Mongoose

Zod

Email.js

Pet Adoption React Native

Features and Functionality

Pet Listings

Users can browse a list of adoptable pets, with filters for species, breed, size, location, and age.

Pet Detail Pages

Each pet profile includes images, bio, medical history, age, vaccination status, and shelter contact info.

Adoption Application

Users can apply to adopt a pet through a form validated with Zod. Applications are securely sent to the shelter.

User Authentication

JWT-based login and registration system for users to track their adoption status and manage their profiles.

Favorites & Saved Pets

Logged-in users can save pets they’re interested in and revisit them later from their dashboard.

Admin Dashboard for Shelters

Shelters can log in to manage pet listings, review adoption applications, and respond to users.

Push Notifications (Future Scope)

Architecture is set up to support push notifications for application updates and new pet alerts.

Responsive UI

Mobile-first design using Tailwind CSS (via NativeWind) ensures responsive and consistent layouts across devices.

Email Notifications

Email.js is used to send confirmation emails to users and alerts to shelters when an application is submitted.

Secure Backend API

RESTful API built with Express.js, secured with JWT, and connected to MongoDB for data storage.

Global State Management

React’s Context API is used for managing auth state, user preferences, and form states globally.

Challenges and Solutions

Optimizing Performance Across Devices

Used Expo’s optimization tools and React Native’s FlatList for efficient rendering of large pet lists.

Managing Secure Authentication in a Mobile App

Implemented secure JWT storage using Expo SecureStore and protected routes using auth guards in navigation flows.

Form Validation in a Complex Mobile UI

Used Zod for schema-based form validation, with clear user feedback on errors and inline messaging.

Synchronizing User Actions Across Client and Server

Used Axios for RESTful communication and Context API to reflect real-time state updates without refetching.

Email Deliverability Issues

Set up Email.js with fallback error handling and added clear user alerts for email success/failure.

Admin-Specific Features in a Unified App

Implemented role-based access control in both frontend and backend to distinguish between regular users and shelter admins.

Backend Hosting Limitations

Designed APIs to be stateless, optimized query performance in MongoDB, and set up basic rate limiting for security.

Work - Pet Adoption React Native